//package com.yhjr.demo.config;
//
//import java.sql.SQLException;
//
//import javax.sql.DataSource;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.context.embedded.FilterRegistrationBean;
//import org.springframework.boot.context.embedded.ServletRegistrationBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Primary;
//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
//import org.springframework.transaction.PlatformTransactionManager;
//
//import com.alibaba.druid.pool.DruidDataSource;
//import com.alibaba.druid.support.http.StatViewServlet;
//import com.alibaba.druid.support.http.WebStatFilter;
//
///**
// * DruidDataSource 配置类
// * 
// * @Author  LiuBao
// * @Version 2.0
// *   2017年3月29日
// */
//@Configuration
//public class DruidDataSourceConfiguration{
//
//	private static final Logger logger = LoggerFactory.getLogger(DruidDataSourceConfiguration.class);
//
//	@Value("${spring.datasource.url}")
//	private String dbUrl;
//
//	@Value("${spring.datasource.username}")
//	private String username;
//
//	@Value("${spring.datasource.password}")
//	private String password;
//
//	@Value("${spring.datasource.driver-class-name}")
//	private String driverClassName;
//
//	@Value("${spring.datasource.initialSize}")
//	private int initialSize;
//
//	@Value("${spring.datasource.minIdle}")
//	private int minIdle;
//
//	@Value("${spring.datasource.maxActive}")
//	private int maxActive;
//
//	@Value("${spring.datasource.maxWait}")
//	private int maxWait;
//
//	@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
//	private int timeBetweenEvictionRunsMillis;
//
//	@Value("${spring.datasource.minEvictableIdleTimeMillis}")
//	private int minEvictableIdleTimeMillis;
//
//	@Value("${spring.datasource.validationQuery}")
//	private String validationQuery;
//
//	@Value("${spring.datasource.testWhileIdle}")
//	private boolean testWhileIdle;
//
//	@Value("${spring.datasource.testOnBorrow}")
//	private boolean testOnBorrow;
//
//	@Value("${spring.datasource.testOnReturn}")
//	private boolean testOnReturn;
//
//	@Value("${spring.datasource.poolPreparedStatements}")
//	private boolean poolPreparedStatements;
//
//	@Value("${spring.datasource.filters}")
//	private String filters;
//	
//	@Value("${druid.login.username}")
//	private String loginUsername;
//	@Value("${druid.login.password}")
//	private String loginPassword;
//
//	@Bean
//	public ServletRegistrationBean druidServlet() {
//		ServletRegistrationBean reg = new ServletRegistrationBean();
//		reg.setServlet(new StatViewServlet());
//		reg.addUrlMappings("/druid/*");
//		reg.addInitParameter("loginUsername", loginUsername);
//		reg.addInitParameter("loginPassword", loginPassword);
//		return reg;
//	}
//
//	@Bean
//	public FilterRegistrationBean filterRegistrationBean() {
//		FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
//		filterRegistrationBean.setFilter(new WebStatFilter());
//		filterRegistrationBean.addUrlPatterns("/*");
//		filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
//		filterRegistrationBean.addInitParameter("profileEnable", "true");
//		filterRegistrationBean.addInitParameter("principalCookieName", "USER_COOKIE");
//		filterRegistrationBean.addInitParameter("principalSessionName", "USER_SESSION");
//		return filterRegistrationBean;
//	}
//
//	  /**
//	  * DataSource Defination
//	  */	
//	@Bean(destroyMethod = "close", name = "dataSource")
//	@Primary
//	public DataSource druidDataSource() {
//		DruidDataSource datasource = new DruidDataSource();
//		datasource.setUrl(this.dbUrl);
//		datasource.setUsername(username);
//		datasource.setPassword(password);
//		datasource.setDriverClassName(driverClassName);
//		datasource.setInitialSize(initialSize);
//		datasource.setMinIdle(minIdle);
//		datasource.setMaxActive(maxActive);
//		datasource.setMaxWait(maxWait);
//		datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
//		datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
//		datasource.setValidationQuery(validationQuery);
//		datasource.setTestWhileIdle(testWhileIdle);
//		datasource.setTestOnBorrow(testOnBorrow);
//		datasource.setTestOnReturn(testOnReturn);
//		datasource.setPoolPreparedStatements(poolPreparedStatements);
//		try {
//			datasource.setFilters(filters);
//		} catch (SQLException e) {
//			logger.error("druid configuration initialization filter", e);
//		}
//		return datasource;
//	}
//	
//	  /**
//	  * TransactionManager
//	  */
//	 @Autowired
//	 @Bean(name = "transactionManager")
//	 protected PlatformTransactionManager createTransactionManager(DataSource dataSource) {
//	     return new DataSourceTransactionManager(dataSource);
//	 }
//
//}